// interface vs type
// !相同点：都可以描述对象或函数
// !都允许类型拓展，只不过语法不一样，interface 用的是 extends 继承，type 用的是 & 符号形成交叉类型

// type 描述对象
/* type TPerson = {
  name: string;
  age: number
} */

interface IPerson {
  name: string;
  age: number
}
const o: IPerson = { name: 'xxx', age: 18 }


// type 描述函数
/* type TTemp = {
  (name: string, age: number): void
} */
interface ITemp {
  (name: string, age: number): void
}
// type Ttemp = (name: string, age: number) => void
const temp: ITemp = (name, age) => {}


// type 其实也可以进行类型拓展，用的是 &
type Point2D = {
  x: number
  y: number
}
type Point3D = { z: number } & Point2D

const pos: Point3D = {
  x: 88,
  y: 47,
  z: 99,
}

export { }